﻿//////////////////////////////////////////////////////////////////////////////
//系统名：DOORSAAS系统
//模块名：数据库连接管理类
//模块说明： 创建数据库连接，配合SQLHelp使用
//开发者：吴晶
//开发时间：2010年10月28日
//版本：1.0
//修改者： 
//修改时间： 
//////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic; 
using System.Text;
using System.Data;
using System.Xml;
using System.Data.SqlClient;
using System.IO;
using System.Collections;
using System.Web;
namespace Sale_DAL
{
    /// <summary>
    /// 其中Command/Trancation都是基与其中的connection基础上创建的。
    /// </summary>
    public class DataBase
    {
        
        /// <summary>
        /// 获取数据库连接字符串，根据当前连接的库类型（平台库，正式库，使用库）
        /// </summary>
        public string ConnectionStr
        {
            get
            {
 
                if (System.Web.HttpContext.Current.Application["DAL_Config_ConnectionStr"] == null)
                {
                    //打开配置文件，
                    FileStream fs = File.Open(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "./Config", FileMode.Open, FileAccess.Read);
                    System.IO.StreamReader reader = new StreamReader(fs);
                    string Config = reader.ReadToEnd();
                    reader.Close();
                    fs.Close();
                    string[] strs = Config.Split(',');
                    if (strs.Length > 3)
                    {
                        System.Web.HttpContext.Current.Application["DAL_Config_ConnectionStr"] = "server=" + strs[0] + ";database=" + strs[1] + ";uid=" + strs[2] + ";pwd=" + strs[3];
                    }
                    else
                    {
                        throw new Exception("数据库连接配置出错！");
                    }
                }
                return System.Web.HttpContext.Current.Application["DAL_Config_ConnectionStr"].ToString();
            }
        }
        private SqlConnection _sqlConnection;
        /// <summary>
        /// 创建连接
        /// </summary>
        public SqlConnection Connection
        {
            get
            {
         
                if (_sqlConnection==null)
                {                      
                    _sqlConnection = new SqlConnection(ConnectionStr);               
                }             
                return _sqlConnection;
            }
            set
            {
                _sqlConnection=value;
            }
        }
        /// <summary>
        /// 打开连接
        /// </summary>
        public void Open()
        {
            if (this.Connection != null)
                this.Connection.Open();
            else
                throw new Exception("数据库连接尚未初始化！");
        }
        public void Close()
        {
            if(this.Connection !=null)
            {
                if(this.Connection.State != System.Data.ConnectionState.Closed)
                    this.Connection.Close();

            }
        }
        private SqlCommand _sqlCommand =null;
        /// <summary>
        /// 创建Command
        /// </summary>
        public SqlCommand Command
        {
            get
            {
                if (Command==null)
                {
                    Command = new SqlCommand();
                }
                if( Command.Connection ==null)
                    Command.Connection = this.Connection;
                return _sqlCommand;
            }
            set
            {
                _sqlCommand=value;
            }
        }
        private SqlTransaction _sqlTransaction = null;
        /// <summary>
        /// 创建事务
        /// </summary>
        public SqlTransaction Transaction
        {
            get
            {
                if(_sqlTransaction==null)
                _sqlTransaction =this.Connection.BeginTransaction();
                return _sqlTransaction;
            }
        }
        private DataSet _Data;
        public DataSet Data
        {
            get
            {
                if (_Data == null)
                    _Data = new DataSet();
                return _Data;
            }
            set
            {
                _Data = value;
            }
        }
    }
 
 
}
